﻿using System;

namespace Pay.DTO.jwuct {
	/// <summary>
	/// 基本请求
	/// </summary>
	public class jwuct_head {
		public jwuct_head() {
#if DEBUG
			branch_id = "000001";
			platform_id = "000001";
#else
			branch_id = "17083861";
			platform_id = "081716";
#endif
		}
		/// <summary>
		/// 方法编号
		/// </summary>
		public string messageid { get; set; }
		/// <summary>
		/// 商户接入方系统内部订单号，要求32个字符内，建议是数字、大小写字母组合，且在同一个商户号下唯一。
		/// </summary>
		public string out_trade_no { get; set; }
		/// <summary>
		/// 服务方平台分配的商户号(测试：000001)
		/// </summary>
		public string branch_id { get; set; }
		/// <summary>
		/// 服务方平台分配的平台编号 (测试：000001)
		/// </summary>
		public string platform_id { get; set; }
		/// <summary>
		/// 随机字符串(随机字符串，不长于32位)
		/// </summary>
		public string nonce_str { get; set; }
		/// <summary>
		/// sign－md5
		/// </summary>
		public string sign { get; set; }
	}

	/// <summary>
	/// 扫码请求
	/// </summary>
	public class jwuct_native : jwuct_head {
		/// <summary>
		/// 支付方式编号 10:微信 20:支付宝
		/// </summary>
		public string pay_type { get; set; }
		/// <summary>
		/// 金额(单位：分)
		/// </summary>
		public string total_fee { get; set; }
		/// <summary>
		/// 产品描述，通常会显示在客户支付的页面
		/// </summary>
		public string product_desc { get; set; }
		/// <summary>
		/// 后台通知url，必须为直接可访问的url，不能携带参数。示例：“https://www.xxx.com/wxpay/Notify.action”.支持http跟https
		/// </summary>
		public string notify_url { get; set; }
		/// <summary>
		/// 附加数据，非必填。在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
		/// </summary>
		public string attach_content { get; set; }
	}

	/// <summary>
	/// 影响返回基类
	/// </summary>
	public class jwuct_base_result {
		/// <summary>
		/// 返回系统编码(00表示成功,其余表示失败)
		/// </summary>
		public string resultCode { get; set; }
		/// <summary>
		/// 返回系统描述
		/// </summary>
		public string resultDesc { get; set; }
		/// <summary>
		/// 返回业务编码(00表示成功,其余表示失败)
		/// </summary>
		public string resCode { get; set; }
		/// <summary>
		/// 返回业务描述
		/// </summary>
		public string resDesc { get; set; }
		/// <summary>
		/// 随机字符串(随机字符串，不长于32位)
		/// </summary>
		public string nonceStr { get; set; }
		/// <summary>
		/// sign
		/// </summary>
		public string sign { get; set; }
	}

	/// <summary>
	/// 扫码请求后响应
	/// </summary>
	public class jwuct_native_result : jwuct_base_result {
		/// <summary>
		/// 支付二维码连接:返回业务参数(成功时返回)
		/// </summary>
		public string payUrl { get; set; }
	}


	/// <summary>
	/// 异步通知
	/// </summary>
	public class jwuct_notity : jwuct_base_result {
		/// <summary>
		/// 服务方平台分配的商户号
		/// </summary>
		public string branchId { get; set; }
		/// <summary>
		/// 时间
		/// </summary>
		public string createTime { get; set; }
		/// <summary>
		/// 订单金额(单位:分)
		/// </summary>
		public string orderAmt { get; set; }
		/// <summary>
		/// 服务方平台系统订单号，特定情况下核对账务用
		/// </summary>
		public string orderNo { get; set; }
		/// <summary>
		/// 商户接入方系统内部订单号，接入方根据这个字段去匹配、更新订单信息
		/// </summary>
		public string outTradeNo { get; set; }
		/// <summary>
		/// 该字段在下单交易中由商户接入方提交，主要用于商户携带订单的自定义数据，此为原样返回。如请求时为空则此处不返回
		/// </summary>
		public string attachContent { get; set; }
		/// <summary>
		/// 产品描述
		/// </summary>
		public string productDesc { get; set; }
		/// <summary>
		/// 支付状态00:未支付 01:支付中 02:已支付 03:支付失败 04:取消  05:退款中 06:已退款 07:退款失败
		/// </summary>
		public string status { get; set; }
	}

	/// <summary>
	/// 快捷请求,响应的是HTML代码，接入方需自己构建出页面展示
	/// </summary>
	public class jwuct_quick : jwuct_head {
		public jwuct_quick() {
			pay_type = "60";
		}
		/// <summary>
		/// 支付方式编号 60:银联快捷支付
		/// </summary>
		public string pay_type { get; set; }
		/// <summary>
		/// 手续费。手续费不能小于平台给商户的成本手续费，单位为分
		/// </summary>
		public string total_fee { get; set; }
		/// <summary>
		/// 交易金额(单位：分)
		/// </summary>
		public string money { get; set; }
		/// <summary>
		/// 产品描述，通常会显示在客户支付的页面
		/// </summary>
		public string product_desc { get; set; }
		/// <summary>
		/// 后台通知url，必须为直接可访问的url，不能携带参数。示例：“https://www.xxx.com/wxpay/Notify.action”.支持http跟https
		/// </summary>
		public string back_notify_url { get; set; }
		/// <summary>
		/// 前端通知页面url
		/// </summary>
		public string front_notify_url { get; set; }
		/// <summary>
		/// 附加数据，非必填。在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
		/// </summary>
		public string attach_content { get; set; }

		/// <summary>
		/// 支付银行卡号，传入此参数则用户只能用此银行卡号进行支付。
		/// </summary>
		public string pay_bank_num { get; set; }
		/// <summary>
		/// 出款银行名称
		/// </summary>
		public string bank_name { get; set; }
		/// <summary>
		/// 出款银行卡号
		/// </summary>
		public string bank_num { get; set; }
		/// <summary>
		/// 出身份证
		/// </summary>
		public string id_card { get; set; }
		/// <summary>
		/// 出款账户-姓名
		/// </summary>
		public string id_name { get; set; }
	}
}
